home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / tree / TreePath.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  3.4 KB  |  194 lines

  1. package javax.swing.tree;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7. import java.util.Vector;
  8.  
  9. public class TreePath implements Serializable {
  10.    private TreePath parentPath;
  11.    private transient Object lastPathComponent;
  12.  
  13.    protected TreePath() {
  14.    }
  15.  
  16.    public TreePath(Object var1) {
  17.       if (var1 == null) {
  18.          throw new IllegalArgumentException("path in TreePath must be non null.");
  19.       } else {
  20.          this.lastPathComponent = var1;
  21.          this.parentPath = null;
  22.       }
  23.    }
  24.  
  25.    protected TreePath(TreePath var1, Object var2) {
  26.       if (var2 == null) {
  27.          throw new IllegalArgumentException("path in TreePath must be non null.");
  28.       } else {
  29.          this.parentPath = var1;
  30.          this.lastPathComponent = var2;
  31.       }
  32.    }
  33.  
  34.    public TreePath(Object[] var1) {
  35.       if (var1 != null && var1.length != 0) {
  36.          this.lastPathComponent = var1[var1.length - 1];
  37.          if (var1.length > 1) {
  38.             this.parentPath = new TreePath(var1, var1.length - 1);
  39.          }
  40.  
  41.       } else {
  42.          throw new IllegalArgumentException("path in TreePath must be non null and not empty.");
  43.       }
  44.    }
  45.  
  46.    protected TreePath(Object[] var1, int var2) {
  47.       this.lastPathComponent = var1[var2 - 1];
  48.       if (var2 > 1) {
  49.          this.parentPath = new TreePath(var1, var2 - 1);
  50.       }
  51.  
  52.    }
  53.  
  54.    public boolean equals(Object var1) {
  55.       if (var1 == this) {
  56.          return true;
  57.       } else if (!(var1 instanceof TreePath)) {
  58.          return false;
  59.       } else {
  60.          TreePath var2 = (TreePath)var1;
  61.          if (this.getPathCount() != var2.getPathCount()) {
  62.             return false;
  63.          } else {
  64.             for(TreePath var3 = this; var3 != null; var3 = var3.parentPath) {
  65.                if (!var3.lastPathComponent.equals(var2.lastPathComponent)) {
  66.                   return false;
  67.                }
  68.  
  69.                var2 = var2.parentPath;
  70.             }
  71.  
  72.             return true;
  73.          }
  74.       }
  75.    }
  76.  
  77.    public Object getLastPathComponent() {
  78.       return this.lastPathComponent;
  79.    }
  80.  
  81.    public TreePath getParentPath() {
  82.       return this.parentPath;
  83.    }
  84.  
  85.    public Object[] getPath() {
  86.       int var1 = this.getPathCount();
  87.       Object[] var2 = new Object[var1--];
  88.  
  89.       for(TreePath var3 = this; var3 != null; var3 = var3.parentPath) {
  90.          var2[var1--] = var3.lastPathComponent;
  91.       }
  92.  
  93.       return var2;
  94.    }
  95.  
  96.    public Object getPathComponent(int var1) {
  97.       int var2 = this.getPathCount();
  98.       if (var1 >= 0 && var1 < var2) {
  99.          TreePath var3 = this;
  100.  
  101.          for(int var4 = var2 - 1; var4 != var1; --var4) {
  102.             var3 = var3.parentPath;
  103.          }
  104.  
  105.          return var3.lastPathComponent;
  106.       } else {
  107.          throw new IllegalArgumentException("Index " + var1 + " is out of the specified range");
  108.       }
  109.    }
  110.  
  111.    public int getPathCount() {
  112.       int var1 = 0;
  113.  
  114.       for(TreePath var2 = this; var2 != null; var2 = var2.parentPath) {
  115.          ++var1;
  116.       }
  117.  
  118.       return var1;
  119.    }
  120.  
  121.    public int hashCode() {
  122.       return this.lastPathComponent.hashCode();
  123.    }
  124.  
  125.    public boolean isDescendant(TreePath var1) {
  126.       if (var1 == this) {
  127.          return true;
  128.       } else if (var1 == null) {
  129.          return false;
  130.       } else {
  131.          int var2 = this.getPathCount();
  132.          int var3 = var1.getPathCount();
  133.          if (var3 < var2) {
  134.             return false;
  135.          } else {
  136.             while(var3-- > var2) {
  137.                var1 = var1.getParentPath();
  138.             }
  139.  
  140.             return this.equals(var1);
  141.          }
  142.       }
  143.    }
  144.  
  145.    public TreePath pathByAddingChild(Object var1) {
  146.       if (var1 == null) {
  147.          throw new NullPointerException("Null child not allowed");
  148.       } else {
  149.          return new TreePath(this, var1);
  150.       }
  151.    }
  152.  
  153.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  154.       var1.defaultReadObject();
  155.       Vector var2 = (Vector)var1.readObject();
  156.       int var3 = 0;
  157.       int var4 = var2.size();
  158.       if (var3 < var4 && var2.elementAt(var3).equals("lastPathComponent")) {
  159.          ++var3;
  160.          this.lastPathComponent = var2.elementAt(var3);
  161.          ++var3;
  162.       }
  163.  
  164.    }
  165.  
  166.    public String toString() {
  167.       StringBuffer var1 = new StringBuffer("[");
  168.       int var2 = 0;
  169.  
  170.       for(int var3 = this.getPathCount(); var2 < var3; ++var2) {
  171.          if (var2 > 0) {
  172.             var1.append(", ");
  173.          }
  174.  
  175.          var1.append(this.getPathComponent(var2));
  176.       }
  177.  
  178.       var1.append("]");
  179.       return var1.toString();
  180.    }
  181.  
  182.    private void writeObject(ObjectOutputStream var1) throws IOException {
  183.       var1.defaultWriteObject();
  184.       Vector var2 = new Vector();
  185.       boolean var3 = true;
  186.       if (this.lastPathComponent != null && this.lastPathComponent instanceof Serializable) {
  187.          var2.addElement("lastPathComponent");
  188.          var2.addElement(this.lastPathComponent);
  189.       }
  190.  
  191.       var1.writeObject(var2);
  192.    }
  193. }
  194.